home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / com / google / analytics / v4 / Bridge.as next >
Encoding:
Text File  |  2011-10-17  |  15.8 KB  |  500 lines

  1. package com.google.analytics.v4
  2. {
  3.    import com.google.analytics.core.EventTracker;
  4.    import com.google.analytics.core.ServerOperationMode;
  5.    import com.google.analytics.core.Utils;
  6.    import com.google.analytics.debug.DebugConfiguration;
  7.    import com.google.analytics.debug.VisualDebugMode;
  8.    import com.google.analytics.external.JavascriptProxy;
  9.    
  10.    public class Bridge implements GoogleAnalyticsAPI
  11.    {
  12.       
  13.       private static var _linkTrackingObject_js:XML = <script>
  14.             <![CDATA[
  15.                 function( container , target )
  16.                 {
  17.                     var targets ;
  18.                     var name ;
  19.                     if( target.indexOf(".") > 0 )
  20.                     {
  21.                         targets = target.split(".");
  22.                         name    = targets.pop();
  23.                     }
  24.                     else
  25.                     {
  26.                         targets = [];
  27.                         name    = target;
  28.                     }
  29.                     var ref   = window;
  30.                     var depth = targets.length;
  31.                     for( var j = 0 ; j < depth ; j++ )
  32.                     {
  33.                         ref = ref[ targets[j] ] ;
  34.                     }
  35.                     window[container][target] = ref[name] ;
  36.                 }
  37.             ]]>
  38.         </script>;
  39.       
  40.       private static var _createTrackingObject_js:XML = <script>
  41.             <![CDATA[
  42.                 function( acct )
  43.                 {
  44.                     _GATracker[acct] = _gat._getTracker(acct);
  45.                 }
  46.             ]]>
  47.         </script>;
  48.       
  49.       private static var _injectTrackingObject_js:XML = <script>
  50.             <![CDATA[
  51.                 function()
  52.                 {
  53.                     try 
  54.                     {
  55.                         _GATracker
  56.                     }
  57.                     catch(e) 
  58.                     {
  59.                         _GATracker = {};
  60.                     }
  61.                 }
  62.             ]]>
  63.         </script>;
  64.       
  65.       private static var _checkGAJS_js:XML = <script>
  66.             <![CDATA[
  67.                 function()
  68.                 {
  69.                     if( _gat && _gat._getTracker )
  70.                     {
  71.                         return true;
  72.                     }
  73.                     return false;
  74.                 }
  75.             ]]>
  76.         </script>;
  77.       
  78.       private static var _checkValidTrackingObject_js:XML = <script>
  79.             <![CDATA[
  80.                 function(acct)
  81.                 {
  82.                     if( _GATracker[acct] && (_GATracker[acct]._getAccount) )
  83.                     {
  84.                         return true ;
  85.                     }
  86.                     else
  87.                     {
  88.                         return false;
  89.                     }
  90.                 }
  91.             ]]>
  92.         </script>;
  93.        
  94.       
  95.       private var _debug:DebugConfiguration;
  96.       
  97.       private var _proxy:JavascriptProxy;
  98.       
  99.       private var _jsContainer:String = "_GATracker";
  100.       
  101.       private var _hasGATracker:Boolean = false;
  102.       
  103.       private var _account:String;
  104.       
  105.       public function Bridge(account:String, debug:DebugConfiguration, jsproxy:JavascriptProxy)
  106.       {
  107.          var msg0:* = null;
  108.          var msg1:* = null;
  109.          var msg2:* = null;
  110.          super();
  111.          _account = account;
  112.          _debug = debug;
  113.          _proxy = jsproxy;
  114.          if(!_checkGAJS())
  115.          {
  116.             msg0 = "";
  117.             msg0 += "ga.js not found, be sure to check if\n";
  118.             msg0 += "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n";
  119.             msg0 += "is included in the HTML.";
  120.             _debug.warning(msg0);
  121.             throw new Error(msg0);
  122.          }
  123.          if(!_hasGATracker)
  124.          {
  125.             if(_debug.javascript && _debug.verbose)
  126.             {
  127.                msg1 = "";
  128.                msg1 += "The Google Analytics tracking code was not found on the container page\n";
  129.                msg1 += "we create it";
  130.                _debug.info(msg1,VisualDebugMode.advanced);
  131.             }
  132.             _injectTrackingObject();
  133.          }
  134.          if(Utils.validateAccount(account))
  135.          {
  136.             _createTrackingObject(account);
  137.          }
  138.          else
  139.          {
  140.             if(!_checkTrackingObject(account))
  141.             {
  142.                msg2 = "";
  143.                msg2 += "JS Object \"" + account + "\" doesn\'t exist in DOM\n";
  144.                msg2 += "Bridge object not created.";
  145.                _debug.warning(msg2);
  146.                throw new Error(msg2);
  147.             }
  148.             _linkTrackingObject(account);
  149.          }
  150.       }
  151.       
  152.       public function link(targetUrl:String, useHash:Boolean = false) : void
  153.       {
  154.          _debug.info("link( " + targetUrl + ", " + useHash + " )");
  155.          _call("_link",targetUrl,useHash);
  156.       }
  157.       
  158.       public function addOrganic(newOrganicEngine:String, newOrganicKeyword:String) : void
  159.       {
  160.          _debug.info("addOrganic( " + [newOrganicEngine,newOrganicKeyword].join(", ") + " )");
  161.          _call("_addOrganic",newOrganicEngine);
  162.       }
  163.       
  164.       public function setAllowLinker(enable:Boolean) : void
  165.       {
  166.          _debug.info("setAllowLinker( " + enable + " )");
  167.          _call("_setAllowLinker",enable);
  168.       }
  169.       
  170.       private function _linkTrackingObject(path:String) : void
  171.       {
  172.          _proxy.call(_linkTrackingObject_js,_jsContainer,path);
  173.       }
  174.       
  175.       public function trackEvent(category:String, action:String, label:String = null, value:Number = NaN) : Boolean
  176.       {
  177.          var param:int = 2;
  178.          if(Boolean(label) && label != "")
  179.          {
  180.             param = 3;
  181.          }
  182.          if(param == 3 && !isNaN(value))
  183.          {
  184.             param = 4;
  185.          }
  186.          switch(param)
  187.          {
  188.             case 4:
  189.                _debug.info("trackEvent( " + [category,action,label,value].join(", ") + " )");
  190.                return _call("_trackEvent",category,action,label,value);
  191.             case 3:
  192.                _debug.info("trackEvent( " + [category,action,label].join(", ") + " )");
  193.                return _call("_trackEvent",category,action,label);
  194.             case 2:
  195.          }
  196.          _debug.info("trackEvent( " + [category,action].join(", ") + " )");
  197.          return _call("_trackEvent",category,action);
  198.       }
  199.       
  200.       public function setClientInfo(enable:Boolean) : void
  201.       {
  202.          _debug.info("setClientInfo( " + enable + " )");
  203.          _call("_setClientInfo",enable);
  204.       }
  205.       
  206.       public function trackTrans() : void
  207.       {
  208.          _debug.info("trackTrans()");
  209.          _call("_trackTrans");
  210.       }
  211.       
  212.       public function setCookieTimeout(newDefaultTimeout:int) : void
  213.       {
  214.          _debug.info("setCookieTimeout( " + newDefaultTimeout + " )");
  215.          _call("_setCookieTimeout",newDefaultTimeout);
  216.       }
  217.       
  218.       public function trackPageview(pageURL:String = "") : void
  219.       {
  220.          _debug.info("trackPageview( " + pageURL + " )");
  221.          _call("_trackPageview",pageURL);
  222.       }
  223.       
  224.       public function getClientInfo() : Boolean
  225.       {
  226.          _debug.info("getClientInfo()");
  227.          return _call("_getClientInfo");
  228.       }
  229.       
  230.       private function _checkValidTrackingObject(account:String) : Boolean
  231.       {
  232.          return _proxy.call(_checkValidTrackingObject_js,account);
  233.       }
  234.       
  235.       private function _checkGAJS() : Boolean
  236.       {
  237.          return _proxy.call(_checkGAJS_js);
  238.       }
  239.       
  240.       public function linkByPost(formObject:Object, useHash:Boolean = false) : void
  241.       {
  242.          _debug.warning("linkByPost( " + formObject + ", " + useHash + " ) not implemented");
  243.       }
  244.       
  245.       private function _call(functionName:String, ... args) : *
  246.       {
  247.          args.unshift("window." + _jsContainer + "[\"" + _account + "\"]." + functionName);
  248.          return _proxy.call.apply(_proxy,args);
  249.       }
  250.       
  251.       public function hasGAJS() : Boolean
  252.       {
  253.          return _checkGAJS();
  254.       }
  255.       
  256.       private function _checkTrackingObject(account:String) : Boolean
  257.       {
  258.          var hasObj:Boolean = _proxy.hasProperty(account);
  259.          var isTracker:Boolean = _proxy.hasProperty(account + "._getAccount");
  260.          return hasObj && isTracker;
  261.       }
  262.       
  263.       public function resetSession() : void
  264.       {
  265.          _debug.warning("resetSession() not implemented");
  266.       }
  267.       
  268.       public function getDetectTitle() : Boolean
  269.       {
  270.          _debug.info("getDetectTitle()");
  271.          return _call("_getDetectTitle");
  272.       }
  273.       
  274.       public function setCampNameKey(newCampNameKey:String) : void
  275.       {
  276.          _debug.info("setCampNameKey( " + newCampNameKey + " )");
  277.          _call("_setCampNameKey",newCampNameKey);
  278.       }
  279.       
  280.       public function setDetectFlash(enable:Boolean) : void
  281.       {
  282.          _debug.info("setDetectFlash( " + enable + " )");
  283.          _call("_setDetectFlash",enable);
  284.       }
  285.       
  286.       public function createEventTracker(objName:String) : EventTracker
  287.       {
  288.          _debug.info("createEventTracker( " + objName + " )");
  289.          return new EventTracker(objName,this);
  290.       }
  291.       
  292.       public function addItem(item:String, sku:String, name:String, category:String, price:Number, quantity:int) : void
  293.       {
  294.          _debug.info("addItem( " + [item,sku,name,category,price,quantity].join(", ") + " )");
  295.          _call("_addItem",item,sku,name,category,price,quantity);
  296.       }
  297.       
  298.       public function clearIgnoredOrganic() : void
  299.       {
  300.          _debug.info("clearIgnoredOrganic()");
  301.          _call("_clearIgnoreOrganic");
  302.       }
  303.       
  304.       public function setVar(newVal:String) : void
  305.       {
  306.          _debug.info("setVar( " + newVal + " )");
  307.          _call("_setVar",newVal);
  308.       }
  309.       
  310.       public function setDomainName(newDomainName:String) : void
  311.       {
  312.          _debug.info("setDomainName( " + newDomainName + " )");
  313.          _call("_setDomainName",newDomainName);
  314.       }
  315.       
  316.       public function hasTrackingAccount(account:String) : Boolean
  317.       {
  318.          if(Utils.validateAccount(account))
  319.          {
  320.             return _checkValidTrackingObject(account);
  321.          }
  322.          return _checkTrackingObject(account);
  323.       }
  324.       
  325.       public function setCampSourceKey(newCampSrcKey:String) : void
  326.       {
  327.          _debug.info("setCampSourceKey( " + newCampSrcKey + " )");
  328.          _call("_setCampSourceKey",newCampSrcKey);
  329.       }
  330.       
  331.       public function addTrans(orderId:String, affiliation:String, total:Number, tax:Number, shipping:Number, city:String, state:String, country:String) : Object
  332.       {
  333.          _debug.info("addTrans( " + [orderId,affiliation,total,tax,shipping,city,state,country].join(", ") + " )");
  334.          _call("_addTrans",orderId,affiliation,total,tax,shipping,city,state,country);
  335.          return null;
  336.       }
  337.       
  338.       public function setCampContentKey(newCampContentKey:String) : void
  339.       {
  340.          _debug.info("setCampContentKey( " + newCampContentKey + " )");
  341.          _call("_setCampContentKey",newCampContentKey);
  342.       }
  343.       
  344.       public function setLocalServerMode() : void
  345.       {
  346.          _debug.info("setLocalServerMode()");
  347.          _call("_setLocalServerMode");
  348.       }
  349.       
  350.       public function getLocalGifPath() : String
  351.       {
  352.          _debug.info("getLocalGifPath()");
  353.          return _call("_getLocalGifPath");
  354.       }
  355.       
  356.       public function clearIgnoredRef() : void
  357.       {
  358.          _debug.info("clearIgnoredRef()");
  359.          _call("_clearIgnoreRef");
  360.       }
  361.       
  362.       public function setAllowAnchor(enable:Boolean) : void
  363.       {
  364.          _debug.info("setAllowAnchor( " + enable + " )");
  365.          _call("_setAllowAnchor",enable);
  366.       }
  367.       
  368.       public function setLocalGifPath(newLocalGifPath:String) : void
  369.       {
  370.          _debug.info("setLocalGifPath( " + newLocalGifPath + " )");
  371.          _call("_setLocalGifPath",newLocalGifPath);
  372.       }
  373.       
  374.       public function getVersion() : String
  375.       {
  376.          _debug.info("getVersion()");
  377.          return _call("_getVersion");
  378.       }
  379.       
  380.       private function _injectTrackingObject() : void
  381.       {
  382.          _proxy.executeBlock(_injectTrackingObject_js);
  383.          _hasGATracker = true;
  384.       }
  385.       
  386.       public function setCookiePath(newCookiePath:String) : void
  387.       {
  388.          _debug.info("setCookiePath( " + newCookiePath + " )");
  389.          _call("_setCookiePath",newCookiePath);
  390.       }
  391.       
  392.       public function setSampleRate(newRate:Number) : void
  393.       {
  394.          _debug.info("setSampleRate( " + newRate + " )");
  395.          _call("_setSampleRate",newRate);
  396.       }
  397.       
  398.       public function setAllowHash(enable:Boolean) : void
  399.       {
  400.          _debug.info("setAllowHash( " + enable + " )");
  401.          _call("_setAllowHash",enable);
  402.       }
  403.       
  404.       public function addIgnoredOrganic(newIgnoredOrganicKeyword:String) : void
  405.       {
  406.          _debug.info("addIgnoredOrganic( " + newIgnoredOrganicKeyword + " )");
  407.          _call("_addIgnoredOrganic",newIgnoredOrganicKeyword);
  408.       }
  409.       
  410.       public function setCampNOKey(newCampNOKey:String) : void
  411.       {
  412.          _debug.info("setCampNOKey( " + newCampNOKey + " )");
  413.          _call("_setCampNOKey",newCampNOKey);
  414.       }
  415.       
  416.       public function cookiePathCopy(newPath:String) : void
  417.       {
  418.          _debug.info("cookiePathCopy( " + newPath + " )");
  419.          _call("_cookiePathCopy",newPath);
  420.       }
  421.       
  422.       public function setLocalRemoteServerMode() : void
  423.       {
  424.          _debug.info("setLocalRemoteServerMode()");
  425.          _call("_setLocalRemoteServerMode");
  426.       }
  427.       
  428.       public function getServiceMode() : ServerOperationMode
  429.       {
  430.          _debug.info("getServiceMode()");
  431.          return _call("_getServiceMode");
  432.       }
  433.       
  434.       public function setDetectTitle(enable:Boolean) : void
  435.       {
  436.          _debug.info("setDetectTitle( " + enable + " )");
  437.          _call("_setDetectTitle",enable);
  438.       }
  439.       
  440.       private function _createTrackingObject(account:String) : void
  441.       {
  442.          _proxy.call(_createTrackingObject_js,account);
  443.       }
  444.       
  445.       public function setCampaignTrack(enable:Boolean) : void
  446.       {
  447.          _debug.info("setCampaignTrack( " + enable + " )");
  448.          _call("_setCampaignTrack",enable);
  449.       }
  450.       
  451.       public function clearOrganic() : void
  452.       {
  453.          _debug.info("clearOrganic()");
  454.          _call("_clearOrganic");
  455.       }
  456.       
  457.       public function setCampTermKey(newCampTermKey:String) : void
  458.       {
  459.          _debug.info("setCampTermKey( " + newCampTermKey + " )");
  460.          _call("_setCampTermKey",newCampTermKey);
  461.       }
  462.       
  463.       public function getDetectFlash() : Boolean
  464.       {
  465.          _debug.info("getDetectFlash()");
  466.          return _call("_getDetectFlash");
  467.       }
  468.       
  469.       public function setCampMediumKey(newCampMedKey:String) : void
  470.       {
  471.          _debug.info("setCampMediumKey( " + newCampMedKey + " )");
  472.          _call("_setCampMediumKey",newCampMedKey);
  473.       }
  474.       
  475.       public function addIgnoredRef(newIgnoredReferrer:String) : void
  476.       {
  477.          _debug.info("addIgnoredRef( " + newIgnoredReferrer + " )");
  478.          _call("_addIgnoredRef",newIgnoredReferrer);
  479.       }
  480.       
  481.       public function setSessionTimeout(newTimeout:int) : void
  482.       {
  483.          _debug.info("setSessionTimeout( " + newTimeout + " )");
  484.          _call("_setSessionTimeout",newTimeout);
  485.       }
  486.       
  487.       public function setRemoteServerMode() : void
  488.       {
  489.          _debug.info("setRemoteServerMode()");
  490.          _call("_setRemoteServerMode");
  491.       }
  492.       
  493.       public function getAccount() : String
  494.       {
  495.          _debug.info("getAccount()");
  496.          return _call("_getAccount");
  497.       }
  498.    }
  499. }
  500.